const path = require('path')
const router = require("koa-router")() //引入路由函数
const swaggerJSDoc = require("swagger-jsdoc")

const swaggerDefinition = {
  "swagger": "2.0",
  "info": {
    "description": "接口API。<br/>使用`koa-jwt`来进行鉴权和认证.<br/>有关`swagger`的更多信息，请访问[http://swagger.io](http://swagger.io) 或者 [https://editor.swagger.io/](https://editor.swagger.io/)查看. ",
    "version": "1.0.0",
    "title": "接口文档",
    "contact": {
      "email": "cui284934@sina.com"
    },

    // "license": {
    //   "name": "Apache 2.0",
    //   "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    // }
    "host": 'http://localhost:8901/',
    "basePath": "/",
  },
  // 鉴权传值
  "securityDefinitions": {
    // "petstore_auth": {
    //   "type": "oauth2",
    //   "authorizationUrl": "http://petstore.swagger.io/oauth/dialog",
    //   "flow": "implicit",
    //   "scopes": {
    //     "write:pets": "modify pets in your account",
    //     "read:pets": "read your pets"
    //   }
    // },
    "Bearer": {
      "type": 'apiKey',
      "name": 'authorization',
      "description": "Value: Bearer ******token******",
      "in": 'header'
    }
  },
  "tags": [
    {
      name: "登录",
      description: "登录和退出的接口API文档",
      "externalDocs": {
        "description": "相关文档",
        "url": "http://swagger.io"
      }
    },
    // {
    //   name: "前台管理",
    //   description: "前台展示页面接口API文档(不需要jwt鉴权)",
    // },
  ],
  "schemes": [
    "http",
    "https"
  ],
  "paths": {
    // "/auth/login": {
    //   "post": {
    //     "tags": [
    //       "登录"
    //     ],
    //     "summary": "登录接口",
    //     "description": "",
    //     "operationId": "loginUser",
    //     "produces": [
    //       "application/json"
    //     ],
    //     "parameters": [
    //       {
    //         "in": "body",
    //         "name": "body",
    //         "description": "用户登录接口",
    //         "required": true,
    //         "schema": {
    //           "$ref": "#/definitions/Login"
    //         }
    //       }
    //     ],
    //     "responses": {
    //       "200": {
    //         "description": "成功返回",
    //         "schema": {
    //           "type": "object",
    //           "properties": {
    //             "code": {
    //               "type": "string",
    //               "description": "返回code码",
    //             },
    //             "data": {
    //               "type": "object",
    //               "description": "返回体信息",
    //             },
    //             "message": {
    //               "type": "string",
    //               "description": "操作描述",
    //             },
    //           }
    //         },
    //         // "headers": {
    //         //   "X-Rate-Limit": {
    //         //     "type": "integer",
    //         //     "format": "int32",
    //         //     "description": "calls per hour allowed by the user"
    //         //   },
    //         //   "X-Expires-After": {
    //         //     "type": "string",
    //         //     "format": "date-time",
    //         //     "description": "date in UTC when token expires"
    //         //   }
    //         // }
    //       },
    //       "400": {
    //         "description": "操作失败"
    //       }
    //     }
    //   }
    // },
    // "/auth/logout": {
    //   "get": {
    //     "tags": [
    //       "登录"
    //     ],
    //     "summary": "注销当前登录的用户会话",
    //     "description": "",
    //     "operationId": "logoutUser",
    //     "produces": [
    //       "application/xml",
    //       "application/json"
    //     ],
    //     "parameters": [],
    //     "responses": {
    //       "default": {
    //         "description": "successful operation"
    //       }
    //     },
    //     // 鉴权接收值
    //     "security": [
    //       {
    //         "Bearer": []
    //       }
    //     ]
    //   }
    // },
    // "/auth/register": {
    //   "post": {
    //     "tags": [
    //       "登录"
    //     ],
    //     "summary": "注册接口",
    //     "description": "",
    //     "operationId": "registerUser",
    //     "produces": [
    //       "application/json"
    //     ],
    //     "parameters": [
    //       {
    //         "in": "body",
    //         "name": "body",
    //         "description": "用户注册接口",
    //         "required": true,
    //         "schema": {
    //           "$ref": "#/definitions/Login"
    //         }
    //       }
    //     ],
    //     "responses": {
    //       "200": {
    //         "description": "成功返回",
    //         "schema": {
    //           "type": "object",
    //           "properties": {
    //             "code": {
    //               "type": "string",
    //               "description": "返回code码",
    //             },
    //             "data": {
    //               "type": "object",
    //               "description": "返回体信息",
    //             },
    //             "message": {
    //               "type": "string",
    //               "description": "操作描述",
    //             },
    //           }
    //         },
    //         // "headers": {
    //         //   "X-Rate-Limit": {
    //         //     "type": "integer",
    //         //     "format": "int32",
    //         //     "description": "calls per hour allowed by the user"
    //         //   },
    //         //   "X-Expires-After": {
    //         //     "type": "string",
    //         //     "format": "date-time",
    //         //     "description": "date in UTC when token expires"
    //         //   }
    //         // }
    //       },
    //       "400": {
    //         "description": "操作失败"
    //       }
    //     }
    //   }
    // },
  },
  "definitions": {
    "Login": {
      "type": "object",
      "properties": {
        "userName": {
          "type": "string",
          "format": "int64",
          "description": "账号"
        },
        "password": {
          "type": "string",
          "format": "string",
          "description": "密码"
        },
      }
    },
  },
  "externalDocs": {
    "description": "koa2",
    "url": "http://www.koajs.com.cn"
  }
}
const options = {
  swaggerDefinition,
  // 去哪个路由下收集 swagger 注释
  apis: [path.join(__dirname, '../routes/*.js')], // <-- not in the definition, but in the options
}
const swaggerSpec = swaggerJSDoc(options)

router.get("/swagger.json", async function (ctx) {
  ctx.set("Content-Type", "application/json")
  ctx.body = swaggerSpec
})

module.exports = router
//将页面暴露出去